/**
 * 
 *  @project Air Traff Monitor
 * 
 *  @author M.Emre ATASEVER <m.emre.atas@gmail.com>
 *  @author M.Burak ALKAN <mburakalkan@gmail.com>
 *  @author H.Burak KARAMIK <bkaramik@gmail.com>
 *
 *	`Air Traffic Monitor' is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *	GNU General Public License for more details.
 *
 *	You should have received a copy of the GNU General Public License
 *	along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef  PROTPROPS_INC
#define  PROTPROPS_INC

#include <QStringList>
class NetworkOptions;

class QKismetOptions{

public:
	virtual ~QKismetOptions();
	void		reIdx();
	QByteArray	optionsString(int idx);
	virtual bool		setOption(QString option,bool enable);
	void		setOptions(QStringList options);
	const QList<int>*	getIdx();
	const QStringList*	getSelected();
	const QStringList*	getCaps();
	const QStringList*	getNames();

	friend class NetworkOptions;
	friend class AlertOptions;
	friend class InfoOptions;
	friend class ClientOptions;
	friend class CardOptions;
private:
	QStringList 	*Caps, *Names, selected;
	QString 	*cName;
	QList<int>	idx;
	int*		refc;
};

class NetworkOptions : public QKismetOptions{
public:
	NetworkOptions();
	static	QString print(QVariant *v, int i);
};


class AlertOptions : public QKismetOptions{
public:
	AlertOptions();
	static	QString print(QVariant *v, int i);
};

class InfoOptions : public QKismetOptions{
public:
	InfoOptions();
	static	QString print(QVariant *v, int i);
};

class CardOptions : public QKismetOptions{
public:
	CardOptions();
	static	QString print(QVariant *v, int i);
};

class ClientOptions : public QKismetOptions{
public:
	ClientOptions();
	bool	setOption(QString option,bool enable);
	static	QString print(QVariant *v, int i);
};

#define NETOPT_BSSID		0
#define NETOPT_TYPE		1
#define NETOPT_SSID		2
#define NETOPT_CHANNEL		3
#define NETOPT_RANGEIP		4
#define NETOPT_MAXRATE		5
#define NETOPT_WEP		6
#define NETOPT_BEACONINFO	7
#define NETOPT_FIRSTTIME	8
#define NETOPT_LASTTIME		9
#define NETOPT_ATYPE		10
#define NETOPT_GPSFIXED		11
#define NETOPT_OCTETS		12	
#define NETOPT_CLOAKED		13
#define NETOPT_BEACONRATE	14 
#define NETOPT_MANUFKEY		15
#define NETOPT_MANUFSCORE	16
#define NETOPT_DATASIZE 	17
#define NETOPT_CARRIERSET	18
#define NETOPT_MAXSEENRATE	19
#define NETOPT_ENCODINGSET	20
#define NETOPT_DECRYPTED	21
#define NETOPT_BSSTIMESTAMP	22
#define NETOPT_TURBOCELLNID	23
#define NETOPT_TURBOCELLMODE	24
#define NETOPT_TURBOCELLSAT	25
#define NETOPT_MAXLAT		26
#define NETOPT_MAXLON		27
#define NETOPT_MAXALT		28
#define NETOPT_BESTLAT		29
#define NETOPT_BESTLON		30
#define NETOPT_BESTALT		31
#define NETOPT_AGGLAT		32
#define NETOPT_AGGLON		33
#define NETOPT_AGGALT		34
#define NETOPT_AGGPOINTS	35
#define NETOPT_MINLAT		36
#define NETOPT_MINLON		37
#define NETOPT_MINALT		38
#define NETOPT_MINSPD		39
#define NETOPT_MAXSPD		40
#define NETOPT_LLCPACKETS	41
#define NETOPT_DATAPACKETS	42
#define NETOPT_CRYPTPACKETS	43
#define NETOPT_WEAKPACKETS	44
#define NETOPT_DUPEIVPACKETS	45
#define NETOPT_QUALITY		46
#define NETOPT_SIGNAL		47
#define NETOPT_NOISE		48
#define NETOPT_BESTQUALITY	49
#define NETOPT_BESTSIGNAL	50
#define NETOPT_BESTNOISE	51

#define CLIOPT_BSSID		0
#define CLIOPT_MAC		1
#define CLIOPT_TYPE		2
#define CLIOPT_FIRSTTIME	3
#define CLIOPT_LASTTIME		4
#define CLIOPT_MANUFKEY		5
#define CLIOPT_MANUFSCORE	6
#define CLIOPT_DATAPACKETS	7
#define CLIOPT_CRYPTPACKETS	8
#define CLIOPT_WEAKPACKETS	9
#define CLIOPT_GPSFIXED		10
#define CLIOPT_MINLAT		11
#define CLIOPT_MINLON		12
#define CLIOPT_MINALT		13
#define CLIOPT_MINSPD		14
#define CLIOPT_MAXLAT		15
#define CLIOPT_MAXLON		16
#define CLIOPT_MAXALT		17
#define CLIOPT_MAXSPD		18
#define CLIOPT_AGGLAT		19
#define CLIOPT_AGGLON		20
#define CLIOPT_AGGALT		21
#define CLIOPT_AGGPOINTS	22
#define CLIOPT_MAXRATE		23
#define CLIOPT_QUALITY		24
#define CLIOPT_SIGNAL		25
#define CLIOPT_NOISE		26
#define CLIOPT_BESTQUALITY	27
#define CLIOPT_BESTSIGNAL	28
#define CLIOPT_BESTNOISE	29
#define CLIOPT_BESTLAT		30
#define CLIOPT_BESTLON		31
#define CLIOPT_BESTALT		32
#define CLIOPT_ATYPE		33
#define CLIOPT_IP		34
#define CLIOPT_DATASIZE		35
#define CLIOPT_MAXSEENRATE	36
#define CLIOPT_ENCODINGSET	37
#define CLIOPT_DECRYPTED	38
#define CLIOPT_WEP		39

#endif 
